package com.ruoyi.cm.domain.bo;

import com.ruoyi.common.core.validate.AddGroup;
import com.ruoyi.common.core.validate.EditGroup;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.*;

import java.util.Date;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 计量单管理业务对象 cm_bs_settle
 *
 * @author zyb
 * @date 2024-09-24
 */

@Data
@EqualsAndHashCode(callSuper = true)
public class CmBsSettleBo extends BaseEntity {

    /**
     * 项目id
     */
    @NotNull(message = "项目id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long projectId;

    /**
     * 合同id
     */
    @NotNull(message = "合同id不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long contractId;

    /**
     * 计量单id
     */
    @NotNull(message = "计量单id不能为空", groups = { EditGroup.class })
    private Long settleId;

    /**
     * 计量分类
     */
    @NotBlank(message = "计量分类不能为空", groups = { AddGroup.class, EditGroup.class })
    private String settleClass;

    /**
     * 计量类型
     */
    @NotBlank(message = "计量类型不能为空", groups = { AddGroup.class, EditGroup.class })
    private String settleType;

    /**
     * 计量单审批状态
     */
    @NotBlank(message = "计量单审批状态不能为空", groups = { AddGroup.class, EditGroup.class })
    private String approvalStatus;

    /**
     * 期数
     */
    @NotNull(message = "期数不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long settleIndex;

    /**
     * 支付方式
     */
    @NotBlank(message = "支付方式不能为空", groups = { AddGroup.class, EditGroup.class })
    private String payMode;

    /**
     * 计量开始日期
     */
    @NotNull(message = "计量开始日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date settleBeginDate;

    /**
     * 计量结束日期
     */
    @NotNull(message = "计量结束日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date settleEndDate;

    /**
     * 计量日期
     */
    @NotNull(message = "计量日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date settleDate;

    /**
     * 支付日期
     */
    @NotNull(message = "支付日期不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date payDate;

    /**
     * 本期完成容量
     */
    @NotNull(message = "本期完成容量不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal bqWcrl;

    /**
     * 本期完成总价
     */
    @NotNull(message = "本期完成总价不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal bqWczj;

    /**
     * 本期支付预付款
     */
    @NotNull(message = "本期支付预付款不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal bqZfyfk;

    /**
     * 本期扣除预付款
     */
    @NotNull(message = "本期扣除预付款不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal bqKcyfk;

    /**
     * 本期扣款（千分之五奖励金）金额
     */
    @NotNull(message = "本期扣款（千分之五奖励金）金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal bqLjkk;

    /**
     * 本期付款金额
     */
    @NotNull(message = "本期付款金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal bqFk;

    /**
     * 截止本期已完成容量
     */
    @NotNull(message = "截止本期已完成容量不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzbqyWcrl;

    /**
     * 截止本期已完成总价
     */
    @NotNull(message = "截止本期已完成总价不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzbqyWczj;

    /**
     * 截止本期已支付预付款
     */
    @NotNull(message = "截止本期已支付预付款不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzbqyZfyfk;

    /**
     * 截止本期已扣除预付款
     */
    @NotNull(message = "截止本期已扣除预付款不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzbqyKcyfk;

    /**
     * 截止本期已扣款（千分之五奖励金）金额
     */
    @NotNull(message = "截止本期已扣款（千分之五奖励金）金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzbqyLjkk;

    /**
     * 截止本期已付款金额
     */
    @NotNull(message = "截止本期已付款金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzbqyFk;

    /**
     * 截止本期付款比例
     */
    @NotNull(message = "截止本期付款比例不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzbqFkbl;

    /**
     * 截止上期已完成容量
     */
    @NotNull(message = "截止上期已完成容量不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzsqyWcrl;

    /**
     * 截止上期已完成总价
     */
    @NotNull(message = "截止上期已完成总价不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzsqyWczj;

    /**
     * 截止上期已支付预付款
     */
    @NotNull(message = "截止上期已支付预付款不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzsqyZfyfk;

    /**
     * 截止上期已扣除预付款
     */
    @NotNull(message = "截止上期已扣除预付款不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzsqyKcyfk;

    /**
     * 截止上期已扣款（千分之五奖励金）金额
     */
    @NotNull(message = "截止上期已扣款（千分之五奖励金）金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzsqyLjkk;

    /**
     * 截止上期已付款金额
     */
    @NotNull(message = "截止上期已付款金额不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzsqyFk;

    /**
     * 截止上期付款比例
     */
    @NotNull(message = "截止上期付款比例不能为空", groups = { AddGroup.class, EditGroup.class })
    private BigDecimal jzsqFkbl;


}
